package 常用类.String类;
/*
    String保存的是字符串常量，在方法区，里面放的值不能更改，效率低，每次String类的更新实际就是更新地址(即创建对象)， private final char value[]
    StringBuffer保存的是字符串变量，在堆里面，里面的值可以更改，每次更新不用更新地址，效率高  private char value

    StringBuffer的直接父类，是AbstractStringBuilder
    StringBuffer实现了Serializable，可以串行化
    在父类中有属性char[] value 没有被final修改，该value数组存放字符串内存，存放在堆中，每次更新就是往字符数组中添加，除非数组满了，才会创建新的对象
    String有属性private final char[] value,该value存放的是字符常量在方法去的地址，每次更新值，在方法区都会创建新的对象
 */
@SuppressWarnings("all")
public class StringBuffer01 {
    public static void main(String[] args) {
        //无参构造器，默认创建一个大小为16的char[] 字符数组
        StringBuffer stringBuffer = new StringBuffer();
        //指定容量 创建一个大小为100的char[] 字符数组
        StringBuffer stringBuffer1 = new StringBuffer(100);
        //创建的字符数组的大小为，当前字符串的大小加上16，即 5 + 16 = 21
        StringBuffer stringBuffer2 = new StringBuffer("hello");

        //String -> StringBuffer
        String s1 = "abc";
        StringBuffer stringBuffer3 = new StringBuffer(s1);

        String s2 = "world";
        stringBuffer3.append(s2);

        //StringBuffer -> String
        StringBuffer stringBuffer4 = new StringBuffer("windows");
        String s = stringBuffer4.toString();

        String s3 = new String(stringBuffer4);

        //append添加

        StringBuffer str = new StringBuffer();
        StringBuffer append = str.append("hell").append(12).append(true);
        System.out.println(append);

        //删除2~5索引位置的值，左闭右开
        //append.delete(2,5);
        System.out.println(append);
        //将索引1~4位置的值替换，左闭右开

        //append.replace(1,4,"haha");
        System.out.println(append);

        //返回指定指定字符串第一次出现的位置索引
        int aTrue = append.indexOf("true");
        //System.out.println(aTrue);

        //在索引1的位置插入值，之前索引1位置的值后移
        append.insert(1, "haode");
        System.out.println(append);

        String ss = null;
//        StringBuffer stringBuffer5 = new StringBuffer(ss);

        String price = "123456,789.123";
        StringBuffer stringBuffer6 = new StringBuffer(price);
        for(int i = stringBuffer6.indexOf(".") - 3; i > 0; i -=3){
            stringBuffer6 = stringBuffer6.insert(i,",");
        }
        System.out.println(stringBuffer6);

    }
}
